﻿// ***********************************************************************
// Assembly         : YERIL_PI_INT
// Author           : Diego Bonilla
// Created          : 03-02-2014
//
// Last Modified By : Diego Bonilla
// Last Modified On : 03-02-2014
// ***********************************************************************
// <copyright file="GridOrdenes.aspx.cs" company="Development Solutions CR">
//     Copyright (c) Development Solutions CR. All rights reserved.
// </copyright>
// <summary></summary>
// ***********************************************************************
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

/// <summary>
/// The Login namespace.
/// </summary>
namespace YERIL_PI_INT.PaginasWebs.Modulos.Login
{
    /// <summary>
    /// Class GridOrdenes.
    /// </summary>
    public partial class GridOrdenes : System.Web.UI.Page
    {
        /// <summary>
        /// The form accion
        /// </summary>
        static string FormAccion = "";
        /// <summary>
        /// The mensaje
        /// </summary>
        public string mensaje = "";
        /// <summary>
        /// The codigo_proyecto
        /// </summary>
        static int codigo_proyecto = 0;
        /// <summary>
        /// The codigo_orden
        /// </summary>
        static int codigo_orden= 0;
        /// <summary>
        /// The usu_puesto
        /// </summary>
        public static int usu_puesto = 0;
        /// <summary>
        /// The usu_codusuario
        /// </summary>
        public static int usu_codusuario = 0;

        /// <summary>
        /// Handles the Load event of the Page control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
        protected void Page_Load(object sender, EventArgs e)
        {

            if (Session["FormAccion"] != null)
            {
                FormAccion = Session["FormAccion"].ToString();

            }

            if (Session["Codigo_Proyecto"] != null)
            {
                codigo_proyecto = Convert.ToInt32(Session["Codigo_Proyecto"]);

            }
            if (Session["Codigo_Usuario"] != null)
            {
                usu_codusuario =Convert.ToInt32( Session["Codigo_Usuario"]);

            }

            if (Session["Usu_Puesto"] != null)
            {
                usu_puesto = Convert.ToInt32(Session["Usu_Puesto"]);

            }

          

            if (!IsPostBack)
            {

                if (FormAccion == "Cargar")
                {
                    if (codigo_proyecto != 0)
                    {
                        btnEditar.Visible = false;
                        btnEliminar.Visible = false;
                        lectura_permisos();
                    }
                }

            }
        }

        private List<WSGestion.MOD_Puesto_Permiso> listaPermisos()
        {

            WSGestion.WSGestion wsgest = new WSGestion.WSGestion();
            wsgest.Url = ConfigurationManager.AppSettings.Get("dirWs");
            List<WSGestion.MOD_Puesto_Permiso> listaPermisos = wsgest.SEL_Puesto_Permiso_By_ID(usu_puesto).ToList();
            return listaPermisos;

        }

        private void lectura_permisos()
        {
            for (int i = 0; i < listaPermisos().Count; i++)
            {
               
                if (listaPermisos()[i].PUEPER_nombre_modulo == "Ordenes")
                {
                    if (listaPermisos()[i].PUEPER_nombre_permiso == "Editar Valor")
                    {
                        btnEditar.Visible = true;
                    }

                    if (listaPermisos()[i].PUEPER_nombre_permiso == "Eliminar Valor")
                    {
                        btnEliminar.Visible = true;
                    }

                    if (listaPermisos()[i].PUEPER_nombre_permiso == "Ver Valor")
                    {
                        CargarGrid();
                    }

                }

            }
        }

        /// <summary>
        /// Cargars the grid.
        /// </summary>
        public void CargarGrid()
        {

            DataTable dt = new DataTable();
            dt.Columns.Add("Código Orden", Type.GetType("System.String"));
            dt.Columns.Add("Fecha Orden", Type.GetType("System.String"));
            dt.Columns.Add("Estado Orden", Type.GetType("System.String"));
            

            int cont = dt.Columns.Count;
            for (int i = 0; i < listaOrdenes().Count; i++)
            {
                dt.Rows.Add();
                dt.Rows[dt.Rows.Count - 1]["Código Orden"] = listaOrdenes()[i].ORD_codorden;
                dt.Rows[dt.Rows.Count - 1]["Fecha Orden"] =Convert.ToDateTime( listaOrdenes()[i].ORD_fecha).ToShortDateString();
                dt.Rows[dt.Rows.Count - 1]["Estado Orden"] = listaOrdenes()[i].ORD_nombreestado;
                
            }


            gvOrdenesProyecto.DataSource = dt;
            gvOrdenesProyecto.DataBind();


        }

        /// <summary>
        /// Listas the ordenes.
        /// </summary>
        /// <returns>List{WSGestion.MOD_Orden}.</returns>
        private List<WSGestion.MOD_Orden> listaOrdenes()
        {

            WSGestion.WSGestion wsgest = new WSGestion.WSGestion();
            wsgest.Url = ConfigurationManager.AppSettings.Get("dirWs");
            List<WSGestion.MOD_Orden> listaOrdenes = wsgest.SEL_Grid_Orden(codigo_proyecto).ToList();
            return listaOrdenes;

        }

        /// <summary>
        /// Handles the SelectedIndexChanged event of the gvOrdenesProyecto control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
        protected void gvOrdenesProyecto_SelectedIndexChanged(object sender, EventArgs e)
        {
           
            codigo_orden = Convert.ToInt32(gvOrdenesProyecto.SelectedRow.Cells[1].Text);
            mensaje = "Se ha seleccionado la orden número: " + codigo_orden;
        }

        /// <summary>
        /// Handles the Click event of the btnEditar control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="ImageClickEventArgs"/> instance containing the event data.</param>
        protected void btnEditar_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                if (codigo_orden == 0)
                {
                    mensaje = "No se ha seleccionado una orden";
                }
                else
                {

            
                    Session["FormAccion"] = "Editar";
                    Session["Codigo_Orden"] = codigo_orden;

                    this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "myUniqueKey", "self.parent.location.replace('OrdenTrabajo.aspx"  +  "')", true);
                }



            }
            catch (Exception exc)
            {

                mensaje = exc.Message.ToString();
            }
        }

        protected void btnImprimir_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
              
               

                if (codigo_orden != 0)
                {

                    Session["Cod_Orden"] = codigo_orden;
                    Response.Redirect("REP_FACTURACION_BY_ORDEN.aspx");
                }


            }
            catch (Exception exc)
            {

                mensaje=exc.ToString();
            }

        }
    }
}